package com.qf.map;

import java.util.*;

/**
 * ● 使用 Map，以老师的名字作为键，表示上述课程安排。
 * ● 增加了一位新老师 Allen 教 java
 * ● 董哥的课程添加一门，ssm
 * ● 遍历 Map，输出所有的老师及老师教授的课程
 * ● 输出所有教 java 的老师。
 */
public class Demo05 {
    public static void main(String[] args) {
        Hashtable<String, String> allCourse = new Hashtable<>();
        getCourse(allCourse); // 使用 Map，以老师的名字作为键，表示上述课程安排。

        addCourse(allCourse, "Allen", "java"); // 增加了一位新老师 Allen 教 java
        addCourse(allCourse, "董哥", "ssm"); // 董哥的课程添加一门，ssm

        whoTeacherTheCourse(allCourse, "java"); // 输出所有教 java 的老师。


        System.out.println("===========================");
        System.out.println(allCourse); // 遍历 Map，输出所有的老师及老师教授的课程
    }

    /**
     * 查询课程的讲师是谁,并将其输出
     * @param course 存储所有课程的集合 Hashtable<String, String>
     * @param subject 需要查询的课程 String
     */
    private static void whoTeacherTheCourse(Hashtable<String, String> course, String subject) {
        Set<Map.Entry<String, String>> entries = course.entrySet();

        for (Map.Entry<String, String> entry : entries) {
//            if (entry.getValue().equals(subject)) {
//                System.out.println(entry.getKey());
//                return;
//            }
            String[] strings = entry.getValue().split(" ");
//            if (strings.length == 1) continue;
            for (String string : strings) {
                if (string.equals(subject)) System.out.println(entry.getKey());
            }
        }

    }

    /**
     * 增加一个新课程
     * @param course 存储所有课程的集合 Hashtable<String, String>
     * @param teacher 需要添加的课程的讲师 String
     * @param subject 需要添加的课程 String
     */
    private static void addCourse(Hashtable<String, String> course, String teacher, String subject) {
        if (course.containsKey(teacher)) {
            Set<Map.Entry<String, String>> entries = course.entrySet();
            for (Map.Entry<String, String> entry : entries) {
                if (entry.getKey().equals(teacher)) {
                    entry.setValue(entry.getValue() + " " + subject);
                }
            }
        } else {
            course.put(teacher, subject);
        }
    }

    /**
     * 初始化
     * @param course 存储所有课程的集合 Hashtable<String, String>
     */
    private static void getCourse(Hashtable<String, String> course) {
        course.put("慧姐", "html css");
        course.put("旭哥", "js jquery");
        course.put("董哥", "java maven mysql");
        course.put("鹏哥", "vue");
    }
}
